import smbus2  #调用树莓派IIC库
import time
import os
from asr_1 import *
import sys
sys.path.append('/home/ubuntu/Ai_FPV/HiwonderSDK')
import Board

class TTS:
      
    address = None
    TTS_MODULE_I2C_ADDR =  0x40 #传感器的IIC地址

    def __init__(self, bus=1):
        self.address = self.TTS_MODULE_I2C_ADDR
        self.bus = smbus2.SMBus(bus)

    def TTSModuleSpeak(self, sign, words):
        head = [0xFD,0x00,0x00,0x01,0x00]             #文本播放命令
        wordslist = words.encode("gb2312")            #将文本编码格式设为GB2312
        signdata = sign.encode("gb2312")    
        length = len(signdata) + len(wordslist) + 2
        head[1] = length >> 8
        head[2] = length
        head.extend(list(signdata))
        head.extend(list(wordslist))      
        write = smbus2.i2c_msg.write(self.address, head)  
        self.bus.i2c_rdwr(write)
        time.sleep(0.05)
        
if __name__ == '__main__':
    v = TTS()
    asr = ASR()

    #[h?]设置单词发音方式，0为自动判断单词发音方式，1为字母发音方式，2为单词发音方式
    #[v?]设置音量，音量范围为0-10,10为最大音量。
    v.TTSModuleSpeak("[h0][v2][m3]","你好,我是语音助手王豪，你可以叫我豪桑")
    time.sleep(4) # 必要延时，等待播放完成


    asr = ASR()   
        #添加的词条和识别模式是可以掉电保存的，第一次设置完成后，可以将1改为0
    if 1:
        asr.eraseWords()
        asr.setMode(2)
        asr.addWords(1, 'zuo zhuan')
        asr.addWords(2, 'you zhuan')
        asr.addWords(3, 'fen jian lv se')
        asr.addWords(4, 'fen jian lan se')
        asr.addWords(5, 'fen jian biao qian yi')
        asr.addWords(6, 'fen jian biao qian er')
        asr.addWords(7, 'fen jian biao qian san')
        asr.addWords(8, 'ting zhi fen jian')    

    while 1:
        data = asr.getResult()
        if data==1:
            print("result:", data)
            v.TTSModuleSpeak("[h0][v3][m3]","开始执行程序")
            time.sleep(2) # 必要延时，等待播放完成
            Board.setBusServoPulse(6,389, 1500)

        elif data==2:
            print("result:", data)
            v.TTSModuleSpeak("[h0][v3][m3]","开始执行程序")
            time.sleep(2) # 必要延时，等待播放完成
            Board.setBusServoPulse(6,789, 1500)

        time.sleep(0.01)  
